
AWS IAM: การใช้งาน Switch Role
AWS IAM คืออะไร ?

แต่ในบล็อกนี้ผมจะมาอธิบายเกี่ยวกับการทำ Switch Role เพื่อนำมาใช้ในการให้สิทธิการใช้งานกับอีกฝ่าย
Switch Role
การ Switch Role คือการสร้างโรลเพื่อมอบสิทธิ์ชั่วคราวในการใช้งาน ตัวอย่างเช่น เราจองโรงแรมและได้บัตรทานอาหารมาสำหรับเข้าใช้งานโรงอาหารของโรงแรม แต่ทันทีที่เรา Check out สิทธิ์ในการใช้โรงอาหารก็จะหายไปทันที
ขั้นตอนการทำ Switch Roles
ในตัวอย่างผมจะมีการใช้งาน 2 Account โดยแบ่งออกเป็น
- First Account เป็นแอคเคาท์ที่มีสิทธิ์การใช้งานสูงสุดและสามารถมอบสิทธิ์การใช้งานให้กับแอคเคาท์อื่นได้
- Second Account เป็นแอคเคาท์ที่ไม่มีสิทธิ์การใช้งานแต่จะถูกมอบโรลให้สามารถสิทธิ์การใช้งานเพิ่มขึ้นได้
การสร้าง Role (First account)
อันดับแรกให้เราทำการเข้าใช้งาน First Account และเข้าไปยังหน้า AWS IAM เพื่อทำการสร้าง Role ขึ้นมา สำหรับมอบสิทธิ์ใช้งานให้กับแอคเคาท์อื่นได้

Step: 1 หัวข้อ Select type of trusted entity
- ให้เราเลือก Another AWS account
- ใส่
ID ที่เราต้องการจะมอบสิทธิ์การใช้งาน Role - ติ้ก Require MFA เพื่อเพิ่มความปลอดภัยในการใช้งาน
- กด Next: Permission

Step: 2 หัวข้อ Attach permissions policies
- ตื้กเลือกเป็น AdministratorAccess
- กด Next: Tags

Step: 3 หัวข้อ Add Tags
- ส่วนนี้ให้ข้ามไปได้เลย ไม่ต้อง Add tags อะไรเพิ่มเติม
Step: 4 หัวข้อ Review
- Role Name ให้เราตั้งชื่อโรลที่เราต้องการจะมอบสิทธิ์
- กด Create role ได้เลย

การทำ Trust relationships (First account)
เป็นการเพิ่มสิทธิ์แอคเคาท์ที่สามารถนำ Role ไปใช้งานได้ โดยการใส่ Account ID ที่เราต้องการจะมอบสิทธิ์ไปใช้งานหลังจากที่เราทำการสร้าง Role เสร็จเรียบร้อย แล้วให้เข้าไปที่ Role ของเรา

- จากนั้นกด Edit trust relationship
- ตามด้วยการใส่โค้ดดังตัวอย่างโดยทำการเปลี่ยน root เป็น :user/และตามด้วยชื่อแอคเคาท์ที่เราต้องการจะมอบสิทธิ์ในการใช้งาน Role ที่เราสร้างจากนั้นทำการ Update Trust Policy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow" "Principal": { "AWS": "arn:aws:iam::xxxxxxxxxxxx:user/account_name" }, "Action": "sts:AssumeRole", "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } } } ] }

การรับสิทธิ์ใช้งาน Role ของแอคเคาท์ปกติ
ในขั้นตอนนี้ให้เราล้อกอินแอคเคาท์ที่ 2 หรือ Second Account ที่อธิบายไปก่อนหน้านี้ซึ่งเป็นแอคเคาท์ที่ไม่มีสิทธิ์การใช้งานแต่จะถูกมอบโรลให้สามารถสิทธิ์การใช้งานเพิ่มขึ้นได้ โดยเราจะทำการรับสิทธิ์การใช้งาน Role ที่เราสร้างไปก่อนหน้านี้จาก Frist account
การสร้าง Policy (Second Account)
เริ่มต้นให้เข้าไปที่หน้า AWS IAM จากนั้นเข้าไปที่หัวข้อ Policy และกดปุ่ม Create Policy ดังรูป

- เลือกหัวข้อ JSON และนำโค้ดด้านล่างมาใช้งานและทำการกด Next: Tags
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" /// sts:AssumeRole คือการกำหนดให้แอคเคาท์ของเราสามารถใช้งาน Role ได้ ], "Resource": [ "*" ] } ] }

- ในส่วนหัวข้อ Add Tags ให้เรากดปุ่ม Next: Review ได้เลยไม่จำเป็นต้องเพิ่มข้อมูลอะไร
- ต่อมาเราจะเจอหน้า Policy ให้เราทำการสร้าง Policy Name ของเราเองโดยในตัวอย่างผมจะใช้ชื่อ cmth-allow-assumerole เพื่อเป็นการนิยามความสามารถของ policy นี้ว่าสามารถทำการใช้งาน Role หรือ Switch Role ได้ จากนั้นทำการกด Create policy ได้เลย
การ Add permissions (Second Account)
หลังจากที่เราสร้าง Policy หรือนโนบายสำหรับการใช้งาน role แล้วต่อมาเราจะทำการนำนโยบายที่เราสร้างก่อนหน้านี้มาใช้งานได้
- อันดับแรกให้เราเข้าไปที่หัวข้อ User ใน AWS IAM และคลิ้กเข้าไปที่ Username ของเรา
-
ทำการกด Add permissions ให้กับแอคเคาท์
- กดไปที่หัวข้อ Attach existing policies directly และทำการค้นหาชื่อ Policy ของเราที่สร้างไปก่อนหน้านี้จากนั้นแล้วเลือกมาใช้งานโดยการกด Next: Review
- เมื่อขึ้นหน้าต่างแสดงผลนี้ให้เรากด Add permissions ได้เลย
การทำ Switch Role (Second Account)
- หลังจาก Add permission เสร็จแล้วให้เราคลิ้กไปที่ชื่อแอคเคาท์ของเราที่เมนูมุมขวาบนและกดไปที่หัวข้อ Switch Roles
- จากนั้นระบบจะแสดงหน้าต่างนี้ขึ้นมาให้กด Switch Role อีกครั้ง
-
พอถึงหน้านี้ระบบจะให้เรากรอกข้อมูล
- Account: ให้ใส่ไอดีของ First account เป็นแอคเคาท์หลักที่ใช้ทำการสร้าง Role ก่อนหน้านี้
- Role: ให้ใส่ชื่อแอคเคาท์หลักที่ใช้ทำการสร้าง Role ก่อนหน้านี้
- Display name: ในส่วนนี้จะสามารถใช้ชื่ออะไรก็ได้ตามที่เราต้องการเพื่อใช้ในการนิยาม Role ที่เราจะทำการใช้งาน
เมื่อเรากรอกข้อมูลครบแล้วก็ให้ทำการกด Switch Role ได้เลย
สรุปผล
เมื่อเราทำการ Switch Role ได้แล้ววิธีการสังเกตก็คือให้ดูที่ชื่อแอคเคาท์ของเรามุมขวาบนจะสังเกตได้ว่าตอนนี้แอคเคาท์ของเราเป็นชื่อโรลที่เราสร้างขึ้นเรียบร้อยแล้ว ดังนี้เราก็สามารถใข้งานและมีสิทธิ์การเข้าถึงข้อมูลเหมือนกับแอคเคาท์หลัก หรือ First account นั้นเอง